package com.ly.emp.util;

import cn.hutool.core.util.StrUtil;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;

import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 管理员工数据处理工具
 *
 * @author luoyun
 * @Date 2023/5/19 15:00
 */
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public class PnelUtils {

    /**
     * 根据周期编码 -> 得到频次年季月
     *
     * @param periodCode
     * @return
     */
    public static String getFrequencyByPeriodCode(String periodCode) {
        if (StrUtil.isBlank(periodCode) || "null".equals(periodCode)) {
            return null;
        }
        if (periodCode.indexOf("Q") != -1) {
            return "2";
        } else if (periodCode.length() == 4) {
            return "3";
        } else if (periodCode.length() == 6) {
            return "1";
        }
        return null;
    }

    /**
     * 考核频度(1月度 2季度 3年度 12月/季 13月/年 23季/年 123月/季/年)
     *
     * @return
     */
    public static Map<String, String> frequencyMap() {
        Map<String, String> map = new HashMap<>();
        map.put("月度", "1");
        map.put("季度", "2");
        map.put("年度", "3");
        map.put("月/季度", "12");
        map.put("月/年度", "13");
        map.put("季/年度", "23");
        map.put("月/季/年度", "123");
        return map;
    }

    /**
     * 是否完成
     *
     * @return
     */
    public static Map<String, String> completeMap() {
        Map<String, String> map = new HashMap<String, String>() {{
            put("已完成", "0");
            put("未完成", "1");
            put("其它", "2");
        }};
        return map;
    }

    /**
     * 是否启用
     *
     * @return
     */
    public static Map<String, String> statusMap() {
        Map<String, String> map = new HashMap<String, String>() {{
            put("是", "true");
            put("否", "false");
        }};
        return map;
    }

    /**
     * 反转map对应的值
     * Map<String, String> reversalLevelMap = PnelUtils.reversalMap(levelMap);
     *
     * @return
     */
    public static Map<String, String> reversalMap(Map<String, String> map) {
        return map.entrySet().stream().collect(Collectors.toMap(entity -> entity.getValue(), entity -> entity.getKey()));
    }
}
